//请求与响应拦截器
import axios from 'axios'
import { ElMessage } from 'element-plus'
import {store} from "@/stores/modules/user"

const request = axios.create({
  baseURL: '', // 设置请求的基础地址,基础路径
  timeout: 5000 //超时的时间设置
})

// 请求拦截器
request.interceptors.request.use((config) => {
  //config配置对象，headers属性为请求头，用于给服务器端携带公共的参数
  //需要返回配置对象，否则可能发送请求失败
  let usestore = store();
  if(usestore.token){
    config.headers.token = usestore.token
  }
  return config
})

// 响应拦截器
request.interceptors.response.use((response) => {
  //成功后回调
 
  //简化数据
  return response.data;
}, (error) => {
  //失败后回调
  //处理http网络错误
  let message = "";
  //响应状态码
  let status = error.response.status
  switch (status) {
    case 401:
      message = 'Token过期,请重新登录'
      break
    case 403:
      //跳转到登录页面
      message = '没有权限，请重新登录'
      break
    case 404:
      message = '请求的资源不存在'
      break;
    case 500:
      message = '服务器错误，请稍后重试'
      break;
    default:
      message = '未知错误，请稍后重试'
      break;
  }
  //提示消息
  console.log(message)
  ElMessage({
    type: 'error',
    message
  });
  return Promise.reject(error)
})
export default request